Product
Socket Now Supports uv.lock Files
Socket now supports uv.lock files to ensure consistent, secure dependency resolution for Python projects and enhance supply chain security.
wolfy87-eventemitter
Advanced tools
The wolfy87-eventemitter package is a lightweight and flexible event emitter library for JavaScript. It allows you to create and manage custom events, making it easier to implement the observer pattern in your applications.
Basic Event Emission
This feature allows you to create an event emitter instance, register an event listener, and emit an event. The listener will be triggered when the event is emitted.
const EventEmitter = require('wolfy87-eventemitter');
const emitter = new EventEmitter();
emitter.on('event', function() {
console.log('Event triggered!');
});
emitter.emit('event');
Event Emission with Arguments
This feature allows you to emit events with arguments. The registered listener can then access these arguments when the event is triggered.
const EventEmitter = require('wolfy87-eventemitter');
const emitter = new EventEmitter();
emitter.on('event', function(arg1, arg2) {
console.log('Event triggered with arguments:', arg1, arg2);
});
emitter.emit('event', 'arg1', 'arg2');
Removing Event Listeners
This feature allows you to remove specific event listeners. In this example, the listener is removed before the event is emitted, so the console log will not be triggered.
const EventEmitter = require('wolfy87-eventemitter');
const emitter = new EventEmitter();
function listener() {
console.log('Event triggered!');
}
emitter.on('event', listener);
emitter.off('event', listener);
emitter.emit('event');
Once Event Listeners
This feature allows you to register a listener that will only be triggered once. After the event is emitted the first time, the listener is automatically removed.
const EventEmitter = require('wolfy87-eventemitter');
const emitter = new EventEmitter();
emitter.once('event', function() {
console.log('Event triggered only once!');
});
emitter.emit('event');
emitter.emit('event');
The 'events' package is the built-in Node.js event emitter module. It provides similar functionality to wolfy87-eventemitter but is more tightly integrated with the Node.js runtime. It is a good choice if you are already using Node.js and want a standard solution.
The 'eventemitter3' package is another lightweight event emitter library for JavaScript. It is known for its performance and small footprint. Compared to wolfy87-eventemitter, it offers a similar API but is optimized for speed and efficiency.
The 'mitt' package is a tiny 200-byte functional event emitter. It is designed to be extremely lightweight and simple to use. While it offers fewer features than wolfy87-eventemitter, it is a great choice for projects where size and simplicity are critical.
As the subtitle suggests, this script brings the power of events from platforms such as node.js to your browser. Although it can be used on any other platform, I just built it with browsers in mind.
This is actually the fourth full rewrite of EventEmitter, my aim is for it to be faster and lighter than ever before. It also has a remapped API which just makes a lot more sense. Because the methods now have more descriptive names it is friendlier to extend EventEmitter into other classes. You will be able to distinguish event methods from your own methods.
I have been working on it for over a year two three years so far and in that time my skills in JavaScript have come a long way. This script is a culmination of my learnings which you can hopefully find very useful.
There are no hard dependencies. The only reason you will want to run npm install
to grab the development dependencies is to build the documentation or minify the source code. No other scripts are required to actually use EventEmitter.
Tests are performed using Mocha and Chai, just serve up the directory using your local HTTP server of choice (http-server is probably a good choice) and open up tests/index.html
. You can also use the server scripts in the tools
directory.
You can run tools/doc.sh
to build from the JSDoc comments found within the source code. The built documentation will be placed in docs/api.md
. I actually keep this inside the repository so each version will have it's documentation stored with it.
You can grab minified versions of EventEmitter from inside this repository, every version is tagged. If you need to build a custom version then you can run tools/dist.sh
.
You can clone the repository with your generic clone commands as a standalone repository or submodule.
# Full repository
git clone git://github.com/Olical/EventEmitter.git
# Or submodule
git submodule add git://github.com/Olical/EventEmitter.git assets/js/EventEmitter
You can also get a copy of EventEmitter through the following package managers:
This project used to be released under MIT, but I release everything under the Unlicense now. Here's the gist of it but you can find the full thing in the UNLICENSE
file.
This is free and unencumbered software released into the public domain.
Anyone is free to copy, modify, publish, use, compile, sell, or distribute this software, either in source code form or as a compiled binary, for any purpose, commercial or non-commercial, and by any means.
I gave people the chance to object in issue #84, which also explains my reasoning.
FAQs
Event based JavaScript for the browser
The npm package wolfy87-eventemitter receives a total of 75,370 weekly downloads. As such, wolfy87-eventemitter popularity was classified as popular.
We found that wolfy87-eventemitter demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Product
Socket now supports uv.lock files to ensure consistent, secure dependency resolution for Python projects and enhance supply chain security.
Research
Security News
Socket researchers have discovered multiple malicious npm packages targeting Solana private keys, abusing Gmail to exfiltrate the data and drain Solana wallets.
Security News
PEP 770 proposes adding SBOM support to Python packages to improve transparency and catch hidden non-Python dependencies that security tools often miss.